package br.ufpe.cin.ip.biblioteca.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import br.ufpe.cin.ip.biblioteca.entidades.Livro;
import br.ufpe.cin.ip.biblioteca.excecoes.ArquivoConfiguracaoNaoEncontradoException;
import br.ufpe.cin.ip.biblioteca.excecoes.PublicacaoNaoEncontradaException;
import br.ufpe.cin.ip.biblioteca.excecoes.RepositorioException;
import br.ufpe.cin.ip.biblioteca.negocio.Fachada;

public class RemoverLivro extends JDialog {
	private static final long serialVersionUID = 3595769062955461232L;
	private Fachada fachada;
	private final JTextField caixaId;
	
	public RemoverLivro(JDialog owner) {
		super(owner, true);
		
		try {
			this.fachada = Fachada.getInstancia();
		} catch(ArquivoConfiguracaoNaoEncontradoException e) {
			this.fachada = null;
			JOptionPane.showMessageDialog(null, e.getMessage());
			System.exit(0);
		}
		
		this.getContentPane().setLayout(null);
		
		JLabel labelTitulo = new JLabel("ID:");
		labelTitulo.setBounds(30, 30, 90, 20);
		this.getContentPane().add(labelTitulo);
		
		this.caixaId = new JNumberField();
		this.caixaId.setBounds(120, 30, 240, 20);
		this.getContentPane().add(this.caixaId);
		
		JButton botaoRemover = new JButton("Remover");
		botaoRemover.setBounds(240, 370, 120, 25);
		botaoRemover.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if((RemoverLivro.this.caixaId.getText() != null) && !RemoverLivro.this.caixaId.getText().trim().isEmpty()) {
					Livro livro = new Livro();
					livro.setId(Integer.parseInt(RemoverLivro.this.caixaId.getText()));
					
					try {
						RemoverLivro.this.fachada.removerPublicacao(livro);
						JOptionPane.showMessageDialog(RemoverLivro.this, "Livro removido com sucesso!", "Mensagem", JOptionPane.INFORMATION_MESSAGE);
						RemoverLivro.this.dispose();
					} catch(RepositorioException e1) {
						JOptionPane.showMessageDialog(RemoverLivro.this, e1.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
					} catch(PublicacaoNaoEncontradaException e1) {
						JOptionPane.showMessageDialog(RemoverLivro.this, e1.getMessage(), "Erro", JOptionPane.WARNING_MESSAGE);
					}
				} else {
					JOptionPane.showMessageDialog(RemoverLivro.this, "Por favor, preencha o campo ID corretamente!", "Erro", JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		this.getContentPane().add(botaoRemover);
		
		this.setTitle("Remover Livro - SysBiblio");
		this.setBounds(100, 100, 420, 470);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
}
